using Raven.Client;

namespace DNT.RavenQA.Web.Infrastructure.Commands
{
    public abstract class RavenCommand<TInput, TResult> where TResult : ICommandResult
    {
        protected RavenCommand(TInput parameter)
        {
            Parameter = parameter;
        }

        public TInput InputParameter
        {
            get { return Parameter; }
        }
        protected readonly TInput Parameter;

        public abstract TResult Execute(IDocumentSession session);
    }
}